package com.gaojinqi.base.common.vo;

import com.gaojinqi.base.common.constant.RespConst;
import com.gaojinqi.base.common.model.PageResp;
import lombok.Getter;

import java.util.Collection;

/**
 * 分页响应
 * todo 未测试泛型是否准确
 *
 * @author gaojinqi
 * @version 1.0
 * @since 2020年04月15日
 */
@Getter
public class PageResultVo<T, DATA extends Collection<? extends T>> implements IResult<DATA> {

    /**
     * 接口状态码
     */
    private Integer code;


    /**
     * 自定义接口提示信息（该参数将覆盖默认提示
     */
    private String message;

    /**
     * 当前页码
     */
    private Integer page;
    /**
     * 每页条目数量
     */
    private Integer size;

    /**
     * 总条数
     */
    private Long total;

    /**
     * 数据
     */
    private Collection<T> data;

    public PageResultVo(PageResp<T> pageResp) {
        this.code = RespConst.RespEnum.SUCCESS.getCode();
        this.message = RespConst.RespEnum.SUCCESS.getMessage();
        this.page = 1;
        this.size = 0;
        this.total = 0L;
        if (pageResp != null) {
            this.page = pageResp.getPage();
            this.size = pageResp.getSize();
            this.total = pageResp.getTotal();
            this.data = pageResp.getContent();
        }
    }

    public static <T, DATA extends Collection<? extends T>> IResult<DATA> suc(PageResp<T> pageResp) {
        return new PageResultVo<>(pageResp);
    }


}
